package src;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class PainelNavegacaoEM extends javax.swing.JPanel implements ActionListener{

	int indiceAtual;
	ArrayList<ImagemPGM> imagens;
	
	
	public PainelNavegacaoEM(int index, ImagemPGM[] imagensArray){
		this.imagens = new ArrayList<ImagemPGM>();
		this.indiceAtual = index;
		for (int i=0; i<imagensArray.length;i++){
			this.imagens.add(imagensArray[i]);
		}
        JButton anterior = new JButton("Anterior");
        anterior.setActionCommand("ANTERIOR");
        anterior.addActionListener(this);
        if (this.indiceAtual<=0){
        	anterior.setEnabled(false);
        }
        this.add(anterior);
        this.add(new JLabel("Imagem"));
        if (this.imagens!=null && this.imagens.size()!=0){
        	this.add(new JLabel(this.getIndiceAtualParaExibicao()));
        }else{
        	this.add(new JLabel("0"));
        }
        this.add(new JLabel("de"));
        this.add(new JLabel(imagens.size()+""));
        
        JButton proximo = new JButton("Proximo");
        proximo.setActionCommand("PROXIMO");
        proximo.addActionListener(this);
        if (this.indiceAtual>=this.imagens.size()-1){
        	proximo.setEnabled(false);
        }
        this.add(proximo);
        this.setMaximumSize(new Dimension(300,40));
        this.setMinimumSize(new Dimension(300,40));
        this.setPreferredSize(new Dimension(300,40));
	}
	
	public String getIndiceAtualParaExibicao(){
		return this.indiceAtual+1+""; 
	}
	
	public ArrayList<ImagemPGM> getImagens() {
		return imagens;
	}

	public void setImagens(ArrayList<ImagemPGM> imagens) {
		this.imagens = imagens;
	}

	public int getIndiceAtual() {
		return indiceAtual;
	}

	public void setIndiceAtual(int indiceAtual) {
		this.indiceAtual = indiceAtual;
	}
	
	public void refresh(){
		this.validate();
		this.repaint();
		this.setVisible(true);
	}
	public void actionPerformed(ActionEvent arg0) {
		if ("PROXIMO".equals(arg0.getActionCommand())) {
			if (indiceAtual+1<=imagens.size()){
				indiceAtual++;
				ControladorPaineis.getInstance().getPainelImagemPGM().setImagemPGM(imagens.get(indiceAtual));
				ControladorPaineis.getInstance().getPainelImagemPGM().desenharImagemPGM();
				ControladorPaineis.getInstance().getPainelGrid().setMatriz(imagens.get(indiceAtual).getMatrizValores());
				ControladorPaineis.getInstance().getPainelGrid().atualizarTabela();
				ImagemPGM[] imgs = new ImagemPGM[imagens.size()];
				ControladorPaineis.getInstance().setPainelControleEM(indiceAtual, imagens.toArray(imgs));
				ControladorPaineis.getInstance().getPainelControle().validate();
				ControladorPaineis.getInstance().getPainelControle().repaint();
				
			}
		}else if ("ANTERIOR".equals(arg0.getActionCommand())) {
			if (indiceAtual-1<=imagens.size()){
				indiceAtual--;
				ControladorPaineis.getInstance().getPainelImagemPGM().setImagemPGM(imagens.get(indiceAtual));
				ControladorPaineis.getInstance().getPainelImagemPGM().desenharImagemPGM();
				ControladorPaineis.getInstance().getPainelGrid().setMatriz(imagens.get(indiceAtual).getMatrizValores());
				ControladorPaineis.getInstance().getPainelGrid().atualizarTabela();
				ImagemPGM[] imgs = new ImagemPGM[imagens.size()];
				ControladorPaineis.getInstance().setPainelControleEM(indiceAtual, imagens.toArray(imgs));
				ControladorPaineis.getInstance().getPainelControle().validate();
				ControladorPaineis.getInstance().getPainelControle().repaint();
			}
		}
	}

}
